// 引入events模块中的EventEmitter和util模块
const EventEmitter = require('events').EventEmitter;
const util = require('util');

// 定义Radio构造函数
function Radio(name, frequency) {
    // 调用EventEmitter的构造函数
    EventEmitter.call(this);
    // 给Radio对象添加name和frequency属性
    this.name = name;
    this.frequency = frequency;
}

// 借助util.inherits实现Radio对EventEmitter的继承
util.inherits(Radio, EventEmitter);

// 给Radio原型添加play方法，用于打开电台
Radio.prototype.play = function () {
    const message = `"${this.name}" ${this.frequency} opened`;
    // 输出打开电台的提示信息
    console.log(message);
    // 触发'play'事件，并传递提示信息
    this.emit('play', message);
    
    const self = this;
    // 延时2秒后输出"lalala..."
    setTimeout(() => {
        console.log('lalala...');
        // 触发'playMusic'事件
        self.emit('playMusic');
    }, 2000);
};

// 给Radio原型添加stop方法，用于关闭电台
Radio.prototype.stop = function () {
    const message = `"${this.name}" ${this.frequency} closed`;
    // 输出关闭电台的提示信息
    console.log(message);
    // 触发'stop'事件，并传递提示信息
    this.emit('stop', message);
};

// 导出Radio构造函数，供其他文件使用
module.exports = Radio;